<?php

namespace app\yy\admin;

use app\admin\controller\Admin;
use app\yy\model\Archive as ArchiveModel;
use app\common\builder\ZBuilder;

class Archive extends Admin
{

    public $status = [
        '0' => '禁用',
        '1' => '启用',
    ];
    public function index()
    {
        // 获取查询条件
        $map = $this->getMap();
        // 数据列表
        $data_list = ArchiveModel::where($map)->order('id desc')->paginate();
        // 使用ZBuilder快速创建数据表格
        return ZBuilder::make('table')
            ->setPageTitle('数据库列表') // 设置页面标题
            ->setTableName('archive') // 设置数据表名
            ->setSearchArea([
                ['select', 'status', '状态', '', '3', $this->status],
            ])
            ->addColumns([ // 批量添加列
                ['id', 'ID'],
                ['title', '名称'],
                ['status', '状态', 'status', '', $this->status],
                ['db_hostname', '数据库地址'],
                ['db_username', '用户名'],
                ['db_password', '密码'],
                ['add_time', '添加时间'],
                ['right_button', '操作', 'btn']
            ])
            ->addTopButtons('add,disable,enable') // 批量添加顶部按钮
            ->addRightButtons('disable,enable,edit') // 批量添加右侧按钮
            ->setRowList($data_list) // 设置表格数据
            ->setColumnWidth([
                '_checkbox' => 10,
                'id' => 15,
                'title' => 30,
                'db_hostname' => 80,
                'db_username' => 40,
                'db_password' => 40,
                'status' => 25,
                'add_time' => 40,
                'right_button' => 30,
            ])
            ->fetch(); // 渲染页面
    }

    public function add()
    {
        if ($this->request->isPost()) {
            $data = $this->request->post();
            if (!$data['title']){
                $this->error('名称 必填');
            }
            if (!$data['db_hostname']){
                $this->error('数据库地址 必填');
            }
            if (!$data['db_username']){
                $this->error('数据库用户名 必填');
            }
            if (!$data['db_password']){
                $this->error('数据库密码 必填');
            }
            if (ArchiveModel::create($data)) {
                $this->success('新增成功', url('index'));
            } else {
                $this->error('新增失败');
            }
        }
        return ZBuilder::make('form')
            ->setPageTitle('添加')
            ->addText('title','名称')
            ->addSelect('status', '状态', '', $this->status,1)
            ->addText('db_hostname','数据库地址')
            ->addText('db_username','数据库用户名')
            ->addText('db_password','数据库密码')
            ->addHidden('add_time',date('Y-m-d H:i:s'))
            ->fetch();
    }

    public function edit($id=''){
        if ($this->request->isPost()) {
            $data = $this->request->post();
            if (!$data['title']){
                $this->error('名称 必填');
            }
            if (!$data['db_hostname']){
                $this->error('数据库地址 必填');
            }
            if (!$data['db_username']){
                $this->error('数据库用户名 必填');
            }
            if (!$data['db_password']){
                $this->error('数据库密码 必填');
            }
            if (ArchiveModel::update($data)) {
                $this->success('新增成功', url('index'));
            } else {
                $this->error('新增失败');
            }
        }
        $info = ArchiveModel::find($id);
        return ZBuilder::make('form')
            ->setPageTitle('添加')
            ->addText('title','名称','',$info['title'])
            ->addSelect('status', '状态', '', $this->status,$info['status'])
            ->addText('db_hostname','数据库地址','',$info['db_hostname'])
            ->addText('db_username','数据库用户名','',$info['db_username'])
            ->addText('db_password','数据库密码','',$info['db_password'])
            ->addHidden('id',$id)
            ->fetch();
    }
}